
/*
 * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 *
 * The contents of this file constitute Original Code as defined in and
 * are subject to the Apple Public Source License Version 1.1 (the
 * "License").  You may not use this file except in compliance with the
 * License.  Please obtain a copy of the License at
 * http://www.apple.com/publicsource and read it before using this file.
 *
 * This Original Code and all software distributed under the License are
 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * @APPLE_LICENSE_HEADER_END@
 */

#ifndef __HASHTABLE_H__2
#define __HASHTABLE_H__2


#ifndef NULL
#define	NULL	0
#endif

typedef struct HashTable
{
	struct hs_entry**   fTable;
	int	fTableSize;
	int	fNumEntries;
	int	fKeyOffset;
	int	fKeySize;
	
} HashTable;

typedef struct hs_entry {
	
	int hashcode;
	unsigned int key;
	unsigned int val;
}hs_entry;

HashTable* CreateHash(int key_size);
void ReleaseHash(HashTable* hash);

unsigned int ComputeHash(HashTable* hash, unsigned int* key);
int AddToHash(HashTable* hash,unsigned int key, unsigned int val);
hs_entry* HashLookup(HashTable* hash, unsigned int* data);
void RemoveFromHash(HashTable* hash, unsigned int* key);
/*int GetHashEntries(HashTable* hash, hs_entry* itemArray, long itemArraySize);*/
#endif

